package com.ojoin.ojoin.eb_spider.utils;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;

public class GetMacAddress {
	public static void main(String[] args) {
		String address = "";
		// String host = "*.*.*.*";

		address = getMacAddress();
		System.out.println("Physical Address is : " + address);

		// address = test.getMacAddress(host);
		// System.out.println("Physical Address is : " + address);
	}

	public static String getMacAddress() {
		String mac = "";
		String line = "";

		String os = System.getProperty("os.name");

		if (os != null && os.startsWith("Windows")) {
			try {
				//String[] envp = {"LANG=GBK"};
				
				String command = "cmd.exe /c ipconfig /all";

				Process p = Runtime.getRuntime().exec(command);

				InputStream in = p.getInputStream();

				InputStreamReader inr = new InputStreamReader(in, "GBK");
				
				BufferedReader br = new BufferedReader(inr);

				while ((line = br.readLine()) != null) {
					// System.out.println(line);
					if (line.indexOf("Physical Address") > 0
							|| line.indexOf("物理地址") > 0) {
						int index = line.indexOf(":") + 2;

						mac = line.substring(index);

						break;
					}
				}

				br.close();

			} catch (IOException e) {
			}
		}

		return mac;
	}

	/*
	 * public static String getMacAddress() { return "00-23-24-86-16-95"; }
	 */

	public static String getMacAddress(String host) {
		String mac = "";
		StringBuffer sb = new StringBuffer();

		try {
			NetworkInterface ni = NetworkInterface.getByInetAddress(InetAddress
					.getByName(host));

			byte[] macs = ni.getHardwareAddress();

			for (int i = 0; i < macs.length; i++) {
				mac = Integer.toHexString(macs[i] & 0xFF);

				if (mac.length() == 1) {
					mac = '0' + mac;
				}

				sb.append(mac + "-");
			}

		} catch (SocketException e) {
			e.printStackTrace();
		} catch (UnknownHostException e) {
			e.printStackTrace();
		}

		mac = sb.toString();
		mac = mac.substring(0, mac.length() - 1);

		return mac;
	}
}